import { useMessage } from 'naive-ui'
export class AsyncTaskHandler {
  /**
   * 处理单个异步任务
   * @param {Promise} task - 单个Promise任务
   * @returns {Promise} 返回一个Promise，解析为任务的结果
   */
  static async handleSingleTask(task: Promise<any>) {
    try {
      const result = await task
      return result
    } catch (error: any) {
      // 捕获任务中的错误，并抛出统一的错误信息
      const errorMessage = error instanceof Error ? error.message : String(error)
      throw new Error(`Single task failed: ${errorMessage}`)
    }
  }

  /**
   * 处理多个异步任务，所有任务必须成功
   * @param {Array<Promise>} tasks - Promise数组
   * @returns {Promise} 返回一个Promise，解析为所有任务的结果数组
   */
  static async handleMultipleTasks(tasks: Promise<any>[]) {
    try {
      // 确保传入的是数组
      if (!(tasks instanceof Array)) {
        throw new Error('Tasks must be an array of Promises')
      }

      // 使用Promise.all处理多个任务
      const results = await Promise.all(tasks)
      return results
    } catch (error) {
      // 捕获任何任务中的错误，并抛出统一的错误信息
      throw new Error(`Multiple tasks failed: ${error.message}`)
    }
  }

  /**
   * 处理多个异步任务，允许部分任务失败
   * @param {Array<Promise>} tasks - Promise数组
   * @returns {Promise} 返回一个Promise，解析为每个任务的状态和结果
   */
  static async handleMultipleTasksWithSettled(tasks: any) {
    try {
      // 确保传入的是数组
      if (!(tasks instanceof Array)) {
        throw new Error('Tasks must be an array of Promises')
      }

      // 使用Promise.allSettled处理多个任务
      const results = await Promise.allSettled(tasks)
      return results
    } catch (error) {
      // 捕获任何任务中的错误，并抛出统一的错误信息
      throw new Error(`Multiple tasks failed: ${error.message}`)
    }
  }
}
